//请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位：大，中和小，每种尺寸分别有固定数目的车位。
//
//请你实现ParkingSystem类：
//
//ParkingSystem(int big, int medium, int small)初始化ParkingSystem类，三个参数分别对应每种停车位的数目。
//bool addCar(int carType)检查是否有carType对应的停车位。carType有三种类型：大，中，小，分别用数字1，2和3表示。一辆车只能停在carType对应尺寸的停车位中。如果没有空车位，请返回false，否则将该车停入车位并返回true。
//
//示例 1：
//输入：
//["ParkingSystem", "addCar", "addCar", "addCar", "addCar"]
//[[1, 1, 0], [1], [2], [3], [1]]
//输出：
//[null, true, true, false, false]
//
//解释：
//ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0);
//parkingSystem.addCar(1); // 返回 true ，因为有 1 个空的大车位
//parkingSystem.addCar(2); // 返回 true ，因为有 1 个空的中车位
//parkingSystem.addCar(3); // 返回 false ，因为没有空的小车位
//parkingSystem.addCar(1); // 返回 false ，因为没有空的大车位，唯一一个大车位已经被占据了



package main

import "fmt"

type ParkingSystem struct {
	Big    int
	Medium int
	Small  int
}

func Constructor(big int, medium int, small int) ParkingSystem {
	return ParkingSystem{
		big,
		medium,
		small,
	}
}

func (this *ParkingSystem) AddCar(carType int) bool {
	flag := true
	if carType == 1 {
		this.Big -= 1
		if this.Big >= 0 {
		} else {
			flag = false
		}
	}
	if carType == 2 {
		this.Medium -= 1
		if this.Medium >= 0 {
		} else {
			flag = false
		}
	}
	if carType == 3 {
		this.Small -= 1
		if this.Small >= 0 {
		} else {
			flag = false
		}
	}
	return flag
}

func main() {
	a := Constructor(1, 1, 0)
	fmt.Println(a.AddCar(1))
	fmt.Println(a.AddCar(2))
	fmt.Println(a.AddCar(3))
	fmt.Println(a.AddCar(1))
}
